import {
    API
} from "../../../utils/fireapi";
import {
    Config
} from '../../../utils/config';

// 小程序配置信息
const app = getApp();

Page({
    data: {
        // 界面定制化的配置参数
        // pageSet: app.globalData.settings.show,
        // 图片水印
        waterPic: "",
        // 文字水印(默认为小程序名称)
        waterText: "",
        // 从camera界面传来的原始图片
        sourceImg: "",
        // 从camera界面传来的选择的证件照尺寸
        idphotoSize: undefined,
        // canvas组件用于图片操作,绘制\下载等
        canvasComp: undefined,
        // 替换背景色后的用于显示的图片(带有水印)
        urlWithWater: "",
        // 原始只有人物主体,无背景图片,用于背景合成
        imageNobgUrl: "",
        // 用于下载的无水印,base64位图片(使用base64格式,
        // 是为了在下载之前便于修改dpi)base64图片无法直接下载,必须通过转化为临时url地址
        // 修改图片dpi的函数直接返回临时url
        imgBase64: "",
        // 从后端获取的数组形式背景色数据
        bgColors: [],
        // 选中使用的背景色
        selectedBg: 0,
        // 后端替换背景服务功能标识
        identity: {},
        // 调用API制作证件照后接收的证件照对象,包含无背景图片和图片像素尺寸等
        idphoto: undefined,
        //下载图片前处理函数(例如:修改图片dpi等)
        beforeFun: new Function(),
        // 是否显示等待界面标识
        waitModal: true,
        // 等待界面参数
        waitItem:{},
    },

    // 设置等待界面的显示或隐藏
    loadWaitModal(flag=true){
        this.setData({
            waitModal:flag
        })
    },
    /**创建证件照 */
    makePhoto(imgSrc) {
        let _this = this;
        //调用生成证件照
        this.loadWaitModal();
        const that = this;
        setTimeout(() => {
            API.createIDPhoto(this.data.canvasComp, imgSrc, this.data.idphotoSize).then((res) => {
                that.setData({
                    imageNobgUrl: res.image,
                    idphoto: res
                })
            }).catch(err => {
                _this.loadWaitModal(false)
                _this.showError({title: err,icon: 'error',duration: 2000,mask: true});
            });
        }, 1000);
    },
    // 用于接收gk-bgpanel更换完背景色后的图片数据,
    urlChanged(event) {
        this.setData({
            urlWithWater: event.detail.url,     // 带水印用于显示
            imgBase64: event.detail.img,        // 无水印用于下载的base64格式图片
            selectedBg: 0//event.detail.bg         // 选择的背景色,用于下载时记录支付状态
        });
    },
    // 下载图片前,对图片进行处理,如下面修改dpi的操作
    beforeDownload(img) {
        return new Promise(async (resolve, reject) => {
            const url = await API.changeDpi(img, 300);
            resolve(url);

        })
    },
    // 显示图片 加载完毕后回调函数,用于隐藏等待界面
    imageLoad: function () {
        this.loadWaitModal(false);
    },

    onLoad(options) {
        const serverData = app.globalData.serverData;
        const waitItem={
                img:serverData.config.waitPageImg,
                text:serverData.config.waitPageTxt
            };
        // 从后端获取背景色数据
        const bgColors = serverData.bgs;
        // 获取更换背景色功能价格
        const identity = serverData.funcPrice[Config.IDENTITY_MAKEPHOTO];
        let segmentImg = wx.getStorageSync("segmentImg");

        this.setData({
            beforeFun: this.beforeDownload,
            bgColors: bgColors,
            identity: identity,
            sourceImg: segmentImg.img,
            idphotoSize: segmentImg.size,
            waitItem:waitItem,
            waterText:serverData.config.mpName,
        })

    },

    onReady() {
        this.setData({
            canvasComp: this.selectComponent("#show-canvas")
        })
        setTimeout(() => {
            this.makePhoto(this.data.sourceImg);
        }, 1000)

    },

})